package cn.zc.Scheduled;
import cn.zc.entity.TimeVo;
import cn.zc.service.impl.PeriodTimeService;
import org.springframework.amqp.rabbit.core.RabbitTemplate;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Service;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.List;
import java.util.Timer;
import java.util.TimerTask;


@Service
public class PeriodTimeNotifier {

    @Autowired
    private RabbitTemplate rabbitTemplate;

    @Autowired
    private PeriodTimeService periodTimeService;

    // 每天午夜检查一次时间表，并设定新的定时任务
//    @Scheduled(cron = "0 0 0 * * ?") // 每天凌晨0点触发
//    public void setupPeriodTimers() {
//        List<TimeVo> periods = periodTimeService.getAllPeriodTimes();
//        for (TimeVo period : periods) {
//            scheduleMessage(period.getStart_time(), period.getPeriod());
//        }
//    }

//    private void scheduleMessage(String startTime, int period) {
//        Date triggerTime = convertToTriggerTime(startTime);
//
//        // 使用Timer类来创建定时任务
//        Timer timer = new Timer();
//        timer.schedule(new TimerTask() {
//            @Override
//            public void run() {
//                // 当到达触发时间时，发送RabbitMQ消息
//                rabbitTemplate.convertAndSend("periodExchange", "periodRoutingKey", "Period " + period + " start");
//            }
//        }, triggerTime);
//    }

    // 辅助方法：将HH:mm格式的时间转换为Date对象
//    private Date convertToTriggerTime(String startTime) {
//        try {
//            SimpleDateFormat dateFormat = new SimpleDateFormat("HH:mm");
//            return dateFormat.parse(startTime);
//        } catch (ParseException e) {
//            throw new RuntimeException("Invalid time format: " + startTime);
//        }
//    }
}
